﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Collections;
using Tibet.Entidades;
using NUnit.Framework;
using Tibet.Logica.FabricaLogica;
using Tibet.Logica.Comandos.ComandoAdministracionLogin;
using Tibet.Logica.Comandos;

namespace Tibet.Pruebas
{

    ///<summary>
    /// Pruebas Unitarias para el caso de uso Crear Cliente
    /// </summary>

    [TestFixture]
    public class PrubeasCliente
    {

        /// <summary>
        /// Prueba Unitaria que se encarga de probar que el cliente a crear
        /// no exista en el sistema
        /// </summary>
        [TestCase]
        public void PruebaExisteCliente()
        {   
            string Nombre = "Jose";
            //Consulta a base de datos
        
            Comando comando = FabricaComandoCliente.CrearComandoBuscarCliente(Nombre);
            comando.Ejecutar();
             
            //Existe usuario en la bd
            Assert.AreEqual(comando.Cadena,Nombre);


        }

        /// <summary>
        /// Prueba unitaria que se encarga de probar que la insercion a la bd
        /// haya insertado efectivamente un Usuario
        /// </summary>
        [TestCase]
        public void PruebaInsertaCliente()
        {

          
            string Nombre = "Prueba";
            Cliente cliente = new Cliente(Nombre);
            //consulta Base de Datos
            Comando comando = FabricaComandoCliente.CrearComandoCrearCliente(cliente);
            comando.Ejecutar();
            //Se inserto correctamente
            Assert.AreEqual(comando.Flag,true);

        }

        /// <summary>
        /// Valida que la modificacion del cliente haya sido exitosa
        /// </summary>
        [TestCase]
        public void ModificarCliente()
        {

            string nombreActual = "Juan Carlos";
            string nombreNuevo = "Alfredo";
            Cliente cliente= new Cliente(nombreNuevo);

            //consulta en la base de datos
            Comando comando = FabricaComandoCliente.CrearComandoModificarCliente(cliente, nombreActual);
            comando.Ejecutar();

            //si se modifico
            Assert.AreEqual(comando.Flag,true);
        
        
        
        }

    }
}